package com.smartwork.common.utils.encrypt;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

import java.io.IOException;

/**
 * <p>
 * 功能:Base64加密工具类
 * </p>
 * 
 * @author flydr
 * 
 */
public class Base64Util {
	/**
	 * 私有构造方法
	 */
	private Base64Util() {
	}

	/**
	 * Base64加密
	 * 
	 * @param str
	 *            明文
	 * @return 密文
	 */
	public static String encode(String str) {
		String destStr = null;
		if (str != null) {
			BASE64Encoder encoder = new BASE64Encoder();
			destStr = encoder.encode(str.getBytes());
		}

		return destStr;
	}

	/**
	 * Base64加密
	 * 
	 * @param bytes
	 *            明文byte数组
	 * @return 密文
	 */
	public static String encodeByBytes(byte[] bytes) {
		String destStr = null;
		if (bytes != null) {
			BASE64Encoder encoder = new BASE64Encoder();
			destStr = encoder.encode(bytes);
		}

		return destStr;
	}

	/**
	 * 
	 * Base64解密
	 * 
	 * @param str
	 *            密文
	 * @return 明文
	 * @throws java.io.IOException
	 */
	public static String decode(String str) throws IOException {
		String destStr = null;
		if (str != null) {
			BASE64Decoder decoder = new BASE64Decoder();

			byte[] temp = decoder.decodeBuffer(str);
			destStr = new String(temp);
		}

		return destStr;
	}

	/**
	 * 
	 * Base64解密
	 * 
	 * @param str
	 *            密文
	 * @return 明文
	 * @throws java.io.IOException
	 */
	public static byte[] decodeToBytes(String str) {
		byte[] bytes = null;
		if (str != null) {
			BASE64Decoder decoder = new BASE64Decoder();
			try {
				bytes = decoder.decodeBuffer(str);
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return bytes;
	}

	/**
	 * 
	 * @param args
	 * @throws java.io.IOException
	 */
	public static void main(String[] args) throws IOException {

	}

}
